package dominio;

import java.sql.SQLException;
import java.util.Vector;

import utilidades.Agente;
import utilidades.TConsulta;

/**
 * Clase que contiene todo lo referente a una incidencia sobre un reporte
 *
 * @author G2.02
 */
public class Incidencia {

	private int idIncidencia;
	private String descripcion;
	private String solucion;
	private TEstadoIncidencia tipoEstado;

	public Incidencia(int idIncidencia, String descripcion, String solucion,
			String tipoEstado) {
		this.idIncidencia = idIncidencia;
		this.descripcion = descripcion;
		this.solucion = solucion;
		this.tipoEstado = TEstadoIncidencia.getEstadoIncidencia(tipoEstado);
	}

	public int getCodigo() {
		throw new UnsupportedOperationException();
	}

	public void insertDB() throws SQLException, Exception{
		String sql = "INSERT INTO incidencias (descripcion, estado, solucion, idReporte) VALUES("+"'"+this.descripcion+"','"+this.tipoEstado+"','"+this.solucion+"',"+"1"+")";
		Agente ag = Agente.getAgente();
		ag.insert(sql);
	}
	
	public void setDescripcion(String des) {
		this.descripcion = des;
	}

	/**
	 * Devuelve una incidencia de la base de datos
	 *
	 * @param idIncidencia
	 *            incidencia a buscar
	 * @return aux Objeto incidencia
	 */
	public static Incidencia read(int idIncidencia) {
		try {
			Agente ag = Agente.getAgente();
			Vector<Object> datosIncidencia = ag.select(TConsulta.INCIDENCIAS,
					"SELECT * FROM incidencias WHERE idincidencia='"
							+ idIncidencia + "'");
			Incidencia aux = new Incidencia((Integer) datosIncidencia.get(0),
					(String) datosIncidencia.get(1),
					(String) datosIncidencia.get(2),
					(String) datosIncidencia.get(3));
			return aux;
		} catch (Exception ex) {
			System.err.println(ex);
		}
		return null;
	}

	public void setIdIncidencia(int idIncidencia) {
		this.idIncidencia = idIncidencia;
	}

	public int getIdIncidencia() {
		return this.idIncidencia;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setSolucion(String solucion) {
		this.solucion = solucion;
	}

	public String getSolucion() {
		return this.solucion;
	}

	@Override
	public String toString() {
		return "Incidencia{" + "idIncidencia=" + idIncidencia
				+ ", descripcion=" + descripcion + ", solucion=" + solucion
				+ ", tipoEstado=" + tipoEstado + '}';
	}

	public TEstadoIncidencia getTipoEstado() {
		return tipoEstado;
	}

	public void setTipoEstado(TEstadoIncidencia tipoEstado) {
		this.tipoEstado = tipoEstado;
	}

}
